/*
 * 启动自运行
 */
$(function() {
	
	//通用跳转——按钮、链接等除下拉选框
	/**
	 usage:
	 <input type="button" value="button" class="redirect" href="url?param=value" [withid="true"]|[confirm="true" [msg="..."]] />
	 <a href="url?param=value" [withid="true"]|[confirm="true" [msg="..."]]>link</a>
	 **/
	$('.redirect:not(select)').click(function()
	{
		if (url = getFullURL(this))
		{
			if ($(this).attr('confirm'))
			{
				if (!(msg = $(this).attr('msg'))) msg = '确定执行此操作吗？';
				if (!confirm(msg)) return false;
			}
		}
		else
		{
			return false;
		}
		window.location.href = url;
	});
	//通用跳转——下拉选框
	/**
	 usage:
	 <select class="redirect" [withid="true"]|[confirm="true" [msg="..."]]>
	 	<option value="url?param=value">option1</option>
		<option value="url?param=value">option2</option>
		...
	 </select>
	 **/
	$('select.redirect').each(function()
	{
		$(this).attr('defaultIndex', this.selectedIndex);
		if ($(this).attr('href')) {
			alert('select 的 redirect 已经被重构，请更新代码结构！');
		}
	});
	$('select.redirect').change(function()
	{
		_this = this;
		alert($(_this).val());
		_dft = $(_this).attr('defaultIndex');
		_url = $(_this).val();
		if ($(_this).attr('withid'))
		{
			if (!(_id = getid()))
			{
				_this.selectedIndex = _dft;
				return false;
			}
			_url += '&id=' + _id;
		}
		if ($(_this).attr('confirm'))
		{
			if (!(msg = $(_this).attr('msg'))) msg = '确定执行此操作吗？';
			if (!confirm(msg))
			{
				_this.selectedIndex = _dft;
				return false;
			}
		}
		window.location.href = _url;
	});
	
	//刷新
	$('.reload').click(function()
	{
		window.location.reload();
	});
	
	//后退
	$('.goback').click(function()
	{
		window.history.go(-1);
	});
	
	//关闭窗口
	$('.close').click(function()
	{
		window.close();
	});
	
	//全选/全不选
	$("#chkAll").click(function(){
			if (this.checked) {
				$(this).attr("checked",false);
				checkboxall();//全选
			}else{
				$(this).attr("checked",true);
				rcheckboxall();//反选
			}
 
	});
	
	//设置焦点于第一个文本框
	$('fieldset .text:first').focus();
	
	//表格停留高亮
	$('.list table tbody tr').mouseover(function() {
		$(this).find('td').addClass('highlight');
	}).mouseout(function() {
		$(this).find('td').removeClass('highlight');
	});
	
	//提示必选项
	$('input[type=text].required, input[type=password].required, select.required, textarea.required').after('&nbsp;<span style="font-family:\'宋体\'; color:red;">*</span>');
	
	
	
	// 上传文件
	/* uage：
		<input type="button" value="上传" class="upload" [rel="single"] name="upload[field]" />
		或
		<input type="button" value="上传" class="upload" rel="multi" name="upload[field][]" />
		可以包含现有列表，紧跟前面的对象后台加上：
		<ul>
			<li><input name="表单名（要与上传按钮的表单名相同）" value="原文件名|文件路径"><a href="文件路径">原文件名</a></li>
			...
		</ul>
	 */
	$('.upload').each(function()
	{
		_this = this;
		_name = $(_this).attr('name');
		_type = $(_this).attr('rel');
		if (!_type) { $(_this).attr('rel', 'single'); _type = 'single'; }
		_id = '_upload_' + _type + '_' + getRandom();
		if (_type != 'single' && _type != 'multi') {
			alert('无法识别的上传方式！\n\nname = ' + _name);
		}
		else if (_type == 'multi' && _name.subright(2) != '[]') {
			alert('警告：\n\n上传多个文件时，对象名应该使用数组，请修正该错误！\n\nname = ' + _name);
		}
		else {
			if (!$(_this).next('ul')[0]) $(_this).after('&nbsp;<ul></ul>');
			$(_this).next('ul').addClass('upload_list_' + _type);
			$(_this)
				.prev().css({'overflow':'hidden','position':'relative'})
				.append('<input type="file" id="' + _id + '_file" name="filedata" />')
				.find('input[type=file]').change(function()
					{
						_file = this;
						_clone = $(_file).clone(true);
						_list = $(_file).parent().next().next();
						_name = $(_list).prev().attr('name');
						_type = $(_list).prev().attr('rel');
						if (_type == 'single') $(_list).find('li').hide(); //上传单个文件时，先隐藏现有项
						$(_list).append('<li class="uploading" id="_item' + _id + '">' + this.value + '</li>');
						//ajax上传
						$.ajaxFileUpload
						(
							{
								url:'includes/upload.php', //服务器端程序
								secureuri		: false,
								fileElementId	: $(_file).attr('id'), //input框的ID
								dataType		: 'json', //返回数据类型
								success			: function (data, status) //上传成功
									{
										if (typeof(data.err) != 'undefined') {
											if(data.err != '') { //服务器端返回错误信息
												alert(data.err);
												$('#_item' + _id).remove(); //移除正在上传项
												$(_list).find('li').show(); //把隐藏的项显示出来
											} else {
												//alert(data.msg.url);
												//alert(_id);
												if (_type == 'single') {
													if ($(_list).find('li').size() > 1) $(_list).find('li:eq(0)').remove(); //上传单个文件完成后，移除原有项
												}
												$('#_item' + _id)
													.removeClass('uploading')
													.html('<input type="checkbox" checked="checked" name="' + _name + '" value="' + data.msg.localname + '|' + data.msg.url + '" /><a href="' + data.msg.url + '" target="_blank">' + data.msg.localname + '</a>')
													.removeAttr('id');
											}
										}
									},
								error			: function (data, status, e) //上传失败
									{
										alert(e);
										$('#_item' + _id).remove();
										$(_list).find('li').show(); //把隐藏的项显示出来
									}
							}
						)
						//上传结束
						$(_list).prev().prev().find('input').remove().end().append(_clone);
					});
		}
	});
	if ($.browser.msie && $.browser.version < 9)
	{
		$('.upload').each(function()
		{
			$(this)
			.prev().css({'position':''})
			.mouseover(function()
				{
					$(this).css({'position':'relative'})
					.find('input[type=file]').show();
				})
			.mouseout(function()
				{
					$(this).css({'position':''})
					.find('input[type=file]').hide();
				})
			.find('input[type=file]').hide();
		});
	}
});

/* ============================= */

/*
 * 自定义函数
 */
//加载状态显示
function getLoading()
{
	$('body').append('<div class="loading"><img src="images/loading.gif" />加载中...</div>')
	$('.loading').hide().ajaxStart(function() {
		$(this).show();
	}).ajaxStop(function() {
		$(this).fadeOut('fast');
	});
}

//获取格式化过的URL
function getFullURL(obj)
{
	if (!(url = $(obj).attr('href')))
	{
		alert('未指定 href 属性');
		return false;
	}
	if ($(obj).attr('withid'))
	{
		if (id = getid())
		{
			url = url + '&id=' + id;
		}
		else{
			return false;
		}
	}
	return url;
}

//获取ISO格式日期
function getdate($date)
{
	if (!$date) {
		$date = new Date();
	}
	date = $date.getDate();
	if (date <=9 ) date = "0" + date;
	month = $date.getMonth();
	month = month + 1;
	if (month <= 9) month = "0" + month;
	year = $date.getYear();
	if (year < 1900) year += 1900; //Firefox下的兼容处理
	return (year + '-' + month + '-' + date);
}

//获取两个日期天数差
function getDateDiff(date1, date2)
{
	var re = /^(\d{4})\S(\d{1,2})\S(\d{1,2})$/;
	var dt1, dt2;
	if (re.test(date1)) {
		dt1 = new Date(RegExp.$1, RegExp.$2 - 1, RegExp.$3);
	}
	if (re.test(date2)) {
		dt2 = new Date(RegExp.$1, RegExp.$2 - 1, RegExp.$3);
	}
	return Math.floor((dt2 - dt1) / (1000 * 60 * 60 * 24))
}

//获取URL中某参数的值
function getUrlParam(name)
{
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
	var r = window.location.search.substr(1).match(reg);
	return r ? unescape(r[2]) : '';
}

//全选/全不选
function selectCheck()
{
	$('span.selectCheck').html('<a href="1">全选</a>/<a href="">不选</a>')
	$('span.selectCheck a').click(function()
	{
		$val = $(this).attr('href');
		$(this).parent().parent().parent().parent().parent().find('input[type=checkbox]').attr('checked',$val);
		return false;
	});
}


//判断是否图片
function isImage(name)
{
	var lastname = name.toLowerCase().split(".");
	if (lastname.has('gif|jpg|png|jpeg'))
	{
		return true;
	}
	else
	{
		return false;
	}
}


//获取复选框所选值
function getid()
{
	var id = new Array();
	var i = 0;
	$('table tbody input[type=checkbox]:checked').each(function()
	{
		id[i] = $(this).val();
		i++;
	});
	if (id.length == 0)
	{
		alert('请先选择');
	}
	else
	{
		return id.join();
	}
	return '';
}

//角色-点击父节点选中子节点
function selectRole(obj,id){
	if(obj.checked){
		$('#'+id+' input[type=checkbox]').each(function(){ $(this).attr('checked',true);});
	}else{
		$('#'+id+' input[type=checkbox]').each(function(){ $(this).attr('checked',false);});	
	}
}

//角色-点击子节点选中父节点
function selectRoleSub(id){
	$('#'+id).attr('checked','checked');	
}
//全选
function checkboxall(){
	$("input[type='checkbox']").each(function(){
		  $(this).attr("checked",true);
	});
}
//反选
function rcheckboxall(){
	$("input[type='checkbox']").each(function(){
		  $(this).attr("checked",false);
	});

}

//输出JavaScript对象的内部结构（常常做调试用）
function dump_obj(myObject) {
	var s = "";
	for (var property in myObject) {
		s = s + "\n "+property +": " + myObject[property] ;
	}
	alert(s);
}

//生成随机数
function getRandom(seeds)
{
	if (!seeds) seeds = 10000;
	return Math.round(Math.random()*seeds);
}
//非jquery的快捷获取对象
function _$(id){
	return document.getElementById(id);	//根据该对象的id获取该对象
}
//隐藏某个对象
function objHide(obj){
	_$(obj).style.display='none';	
}
